//请编写一个C程序,输入一个自然数n(n≤20),输出杨辉三角的前 n行.例如n=6的杨辉三角形如下.
/*
                            1
                           1 1
                          1 2 1
                         1 3 3 1
                        1 4 6 4 1
                      1 5 10 10 5 1
*/

#include <stdio.h>
#define SIZE 20 //最大的元素个数,杨辉三角形第n行,有n个元素
int main()
{
	int n = 0;
	printf("请输入一个自然数:\n");
	scanf("%d", &n);
	int arr[SIZE][SIZE] = {0}; //最多有n行n列,全部元素初始化为0
	arr[0][0] = 1;             //第1行的第1个元素
	//第i(i>0)的第j个元素,等于,第i-1行的第j-1个和第j个之和
	for (int i = 1; i < n; i++) //行
	{
		for (int j = 0; j < i; j++) //列
		{
			if (j - 1 < 0)
				arr[i][j] = 0 + arr[i - 1][j];
			else
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
		}
	}
	//打印
	for (int i = 0; i < n; i++) //行
	{
		//打印前导空格
		for (int k = 0; k < n - i; k++)
		{
			printf("   ");//空格
		}
		for (int j = 0; j < i; j++) //列
		{
			printf("%5d ", arr[i][j]);
		}
		printf("\n");
	}
}
